// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

const db = cloud.database()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const { password, checkOnly } = event
  
  try {
    // 查询用户信息
    const userResult = await db.collection('users').where({
      openid: wxContext.OPENID
    }).get()
    
    if (userResult.data.length === 0) {
      return {
        success: false,
        code: 'USER_NOT_FOUND',
        message: '用户不存在'
      }
    }
    
    const user = userResult.data[0]
    
    // 如果只是检查是否设置了密码
    if (checkOnly) {
      if (!user.paymentPassword) {
        return {
          success: false,
          code: 'NO_PASSWORD_SET',
          message: '未设置支付密码'
        }
      }
      return {
        success: true,
        message: '已设置支付密码'
      }
    }
    
    // 检查是否设置了支付密码
    if (!user.paymentPassword) {
      return {
        success: false,
        code: 'NO_PASSWORD_SET',
        needSetPassword: true,
        message: '请先设置支付密码'
      }
    }
    
    // 验证密码
    if (user.paymentPassword === password) {
      return {
        success: true,
        message: '密码验证成功'
      }
    } else {
      // 记录错误次数（可选）
      const errorCount = (user.passwordErrorCount || 0) + 1
      
      // 更新错误次数
      await db.collection('users').doc(user._id).update({
        data: {
          passwordErrorCount: errorCount,
          lastPasswordErrorTime: new Date()
        }
      })
      
      // 如果错误次数过多，可以锁定账户
      if (errorCount >= 5) {
        await db.collection('users').doc(user._id).update({
          data: {
            passwordLocked: true,
            passwordLockedTime: new Date()
          }
        })
        
        return {
          success: false,
          code: 'PASSWORD_LOCKED',
          message: '密码错误次数过多，账户已锁定'
        }
      }
      
      return {
        success: false,
        code: 'PASSWORD_ERROR',
        message: `密码错误，还可尝试${5 - errorCount}次`
      }
    }
    
  } catch (error) {
    console.error('验证支付密码失败:', error)
    return {
      success: false,
      code: 'SYSTEM_ERROR',
      message: '系统错误，请稍后重试'
    }
  }
}